package cn.iocoder.yudao.module.system.controller.admin.gugu.vo;

import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.util.List;

/**
 * 可填专业查询请求 VO - 专门为前端设计的简化接口
 */
@Schema(description = "可填专业查询请求 VO - 专门为前端设计的简化接口")
@Data
public class SuitableMajorsReqVO {

    @Schema(description = "省份", requiredMode = Schema.RequiredMode.REQUIRED, example = "北京")
    @NotBlank(message = "省份不能为空")
    private String province;

    @Schema(description = "选科", requiredMode = Schema.RequiredMode.REQUIRED, example = "[\"物理\", \"化学\", \"生物\"]")
    @NotNull(message = "选科不能为空")
    private List<String> subjects;

    @Schema(description = "高考分数", requiredMode = Schema.RequiredMode.REQUIRED, example = "650")
    @NotNull(message = "高考分数不能为空")
    private Integer totalScore;

    @Schema(description = "位次", example = "5000")
    private Integer ranking;

    @Schema(description = "年份", example = "2024")
    private Integer year;

    @Schema(description = "页码，从1开始", example = "1", minimum = "1")
    private Integer pageNo = 1;

    @Schema(description = "每页数据量，建议10-50之间", example = "10", minimum = "1", maximum = "100")
    private Integer pageSize = 10;

    @Schema(description = "要返回的等级类型，支持多选。不传或传空数组时返回所有等级数据。" +
            "可选值：rush-冲刺，stable-稳妥，safe-保底",
            example = "[\"rush\", \"stable\", \"safe\"]",
            allowableValues = {"rush", "stable", "safe"})
    private List<String> levelTypes;

    @Schema(description = "是否返回详细专业数据。设置为true返回每个学校的具体专业列表，" +
            "默认为false只返回专业统计信息，以提升响应速度",
            example = "false")
    private Boolean includeMajorDetails = false;

    @Schema(description = "指定学校UUID，当需要获取特定学校的专业详情时使用",
            example = "uuid-123")
    private String targetSchoolUuid;
}
